1
תגובות
שלום,

ראיתי של Yii יש Assets manager מובנה.
כבר שעות אני מחפש באיטנרנט מדריך איך להשתמש בזה, אבל אני לא מצאתי.

מישהו יכול להסביר לי איך זה אמור לעזור לי? ואיך בעזרת זה אני מצליח לקחת baseUrl של נתיב ה- Assets?

אגב, כל הכבוד אלכס על הספרון של MVC, שלחתי אימייל לגבי זה.
תודה :)

1 תשובות

avatar ענה intval ב 08 לאוקטובר 2014 #

עבור רוב האפליקציות אין שום בעיה לשים את קבצי ה-CSS, JS וכו' באיזו תיקיה שנגישה לדפדפן וזהו
אבל מה קורה אם אתה כותב איזה פלאגין או מודול שאנשים אחרים צריכים להשתמש בו והמודול בא עם קבצים JS משלו.
אתה לא יכול פשוט לדחוף את קבציי ה-JS האלה לתיקיה הראשית של מי שמשתמש במודול שלך.
כל הקבצים שלך נמצאים איפשהו תחת protected/modules/bla/scripts/js/ ואין אליהם גישה ישירה מהדפדפן.

כאן נכנס ה-assetmanager שאתה אומר לו הנא קובץ x.js בנתיב הזה. תעתיק אותו לתוך תיקיה שנגישה מהדפדפן בהפעלה הראשונה של האתר ואחרי זה תחזיר לי את הכתובת שיצאה מזה.


וזו דוגמה לשימוש:

// in the module initialization program
class XxiiModule extends CWebModule
{
    ...
    // getAssetsUrl()
    //    return the URL for this module's assets, performing the publish operation
    //    the first time, and caching the result for subsequent use.
    private $_assetsUrl;
 
    public function getAssetsUrl()
    {
        if ($this->_assetsUrl === null)
            $this->_assetsUrl = Yii::app()->getAssetManager()->publish(
                Yii::getPathOfAlias('xxii.assets') );
        return $this->_assetsUrl;
    }
    ....
 
// xxii/views/layouts/main.php
 
   <link rel="stylesheet"
         type="text/css"
         href="<?php echo $this->module->assetsUrl; ?>/css/main.css"/>
   ...
   <div id="logo">
   <?php echo CHtml::link(
                 CHtml::image($this->module->assetsUrl.'/images/logo.png'),
                 array('/xxii')); ?>
   </div>


שהועתקה מפה: http://www.yiiframework.com/wiki/148/understanding-assets/